VRTC

VRTC 是 Web SDK 中所有可调用方法的入口。

VRTC 可用于创建客户端和音视频流对象,以及一些相关操作。

成员属性

类型 名称
string VERSION

成员函数

API 函数签名 描述
checkSystemRequirements () => boolean 检查 Web SDK 对正在使用的浏览器的适配情况
checkVideoPermission (onSuccess: () => void, onFailure: () => void) => void 检测是否有摄像头权限
checkAudioPermission (onSuccess: () => void, onFailure: () => void) => void 检测是否有麦克风权限
getDevices (onSuccess: (devices: DeviceInstance[]) => void, onFailure: (err?: Error) => void) => void 获取可用的媒体输入/输出设备,比如麦克风、摄像头、耳机等
createClient (options: ClientOption) => ClientInstance 创建客户端实例
createStream (options: StreamInstance) => StreamInstance 创建音视频流对象

成员组件

变量说明

VERSION

VERSION: string

当前使用的 SDK 版本号

函数说明

checkSystemRequirements

checkSystemRequirements(): boolean

检查 Web SDK 对正在使用的浏览器的适配情况

返回值

true: Web SDK 与当前使用的浏览器适配 false: Web SDK 与当前使用的浏览器不适配

checkVideoPermission

checkVideoPermission = (onSuccess, onFailure) => {
    return checkVideoPermission(onSuccess, onFailure);
  };

检测是否有摄像头权限

参数

参数名 类型 说明 是否必传 默认值
onSuccess () => void 成功回调 是 无
onFailure () => void 失败回调 是 无

checkAudioPermission

checkAudioPermission = (onSuccess, onFailure) => {
    return checkAudioPermission(onSuccess, onFailure);
  };
  setAid = (aid) => {
    setAid(aid);
  };
  setReportEntry = (key, value) => {
    return setHeader(key, value);
  };

检测是否有麦克风权限

参数

参数名 类型 说明 是否必传 默认值
onSuccess () => void 成功回调 是 无
onFailure () => void 失败回调 是 无

getDevices

getDevices = (onSuccess, onFailure) \=> {
    return  getDevices({(devices: MediaDeviceInfo => void} onSuccess, {(err?: Error) => void} onFailure);
};

获取可用的媒体输入/输出设备,比如麦克风、摄像头、耳机等

参数

参数名 类型 说明 是否必传 默认值
onSuccess (devices: MediaDeviceInfo) => void 成功回调 是 无
onFailure (err?: Error) => void 失败回调 是 无

MediaDeviceInfo 类型

属性名 类型 说明
deviceId string 设备的标识符,每个设备唯一
groupId string 设备的组标识符。如果两个设备属于同一物理设备,则它们具有相同的组标识符
kind string:
  • audioinput
  • audiooutput
  • videoinput
  • 设备的类型
    label string 设备的标签

    createClient

    createClient = (options) => {
        eventLog('rtc_create_client', { message: JSON.stringify(options) });
        return new Proxy(VClient(options), realClientHander);
      };
    

    创建客户端 参数

    参数名 类型 说明 是否必需 默认值
    mode string 通讯模式。计划删除,不建议继续使用。 否 live
    role string 用户模式 否 live
    iceUrl string 工作环境 否 https://rtc-access.bytedance.com/dispatch/v1/AccessInfo?Action=GetAccessInfo

    返回值 client

    createStream

    createStream(options: StreamOption): stream
    

    创建音视频流对象 同一个 client 最多可以创建 2 条流,一般是一条摄像头流和一条屏幕流

    参数

    参数名 类型 说明 必填
    options object 流参数 是

    Option设置

    属性名 类型 说明 必填 默认值
    audio boolean 是否开启音频 是 无
    video boolean 是否开启视频 是
    data boolean 是否传递数据 否 false
    screen boolean 是否为屏幕分享流 否 false
    mediaStream mediaStream 媒体流
    由浏览器原生 API 实现,具体用法和浏览器支持情况请参考 MediaStream
    否
    microphoneId string 麦克风设备 ID 否
    cameraId string 摄像头设备 ID 否

    注意

    1. 支持对 audio、video 和 screen 进行约束,例如,关闭音频 3A,具体用法和浏览器支持情况请参考 MediaTrackConstraints 说明。
    2. microphoneId 和 cameraId 可以从 getDevices 中获取。

    返回值

    stream

    Client

    Client 接口提供音视频通话的核心功能,例如加入频道、发布和订阅音视频流等。

    你可以通过 createClient 来创建 client 对象。一个 client 对象代表一个本地客户端。

    成员函数

    API 函数签名 描述
    init (appId: string, onSuccess?: () => void, onFailure?: (err: Error) => void) => Promise<void> client 初始化,核心功能是与信令服务器建立 Websocket 长连接,是所有后续操作的前提
    join (token: string, roomId: string, userId: string, onSuccess?: () => void, onFailure?: (err: Error) => void) => Promise<string> 加入房间
    leave (onSuccess?: () => void, onFailure?: (err: Error) => void) => Promise<void> 离开当前房间
    publish (byteStream: StreamInstance, options?: publishOption, onFailure?: (err: Error) => void) => Promise<void> 在当前房间发送音视频流
    unpublish (byteStream: StreamInstance, onFailure?: (err: Error) => void) => Promise<void> 停止发送音视频流
    subscribe (byteStream: StreamInstance, options?: SubscribeOption, onFailure?: (err: Error) => void) => Promise<void> 订阅远端流
    unsubscribe (byteStream: StreamInstance, onFailure?: (err: Error) => void) => Promise<void> 停止订阅
    getConnectionState () => string 获取连接状态
    getLocalVideoStats (callback: (stats: { uid: LocalVideoStats; }) => void) => void 获取本地视频流属性
    getLocalAudioStats (callback: (stats: { uid: LocalAudioStats; }) => void) => void 获取本地音频流属性
    getRemoteVideoStats (callback: (stats: { uid: RemoteVideoStats; }) => void) => void 获取远端视频流属性
    getRemoteAudioStats (callback: (stats: { uid: RemoteAudioStats; }) => void) => void 获取远端音频流属性
    renewToken (token: string, onSuccess?: () => void, onFailure?: (err: Error) => void) => Promise<void> 更新校验 token
    setLiveTranscoding (transcode: LiveTranscoding) => void 设置直播推流转码
    startLiveStreaming (url?: string, enableTranscoding?: boolean, onSuccess?: () => void, onFailure?: (err: Error) => void) => Promise<void> 开启转推直播,推流到 CDN
    stopLiveStreaming (onSuccess?: () => void, onFailure?: (err: Error) => void) => void 停止转推直播
    sendCustomMessage (message: string, onSuccess: () => void, onFailure: (err: Error) => void) => Promise<void> 本地用户发送消息,房间内其他用户都将收到
    sendMessageToUser (uid: string, message: string) => Promise<void> 向指定用户发送消息
    setBusinessId (id: string, onFailure: (err: Error) => void) => void 设置业务 ID,一般用于区分相同项目中的不同业务线
    getBusinessId () => string 获取业务 ID
    on (event: string, callback: (event: LicodeEvent) => void) => void 监听取消监听事件
    off (event: string, callback: (event: LicodeEvent) => void) => void 取消监听取消监听事件
    enableAutoSubscribe (options?: { audio: boolean; video: boolean; }) => boolean 自动订阅音频流
    setUserVisibility (visibility: boolean) => Promise<any> 设置用户可见性

    函数说明

    init

    init(appId: string, onSuccess?: () => void, onFailure?: (err: Error) => void): void
    

    client 初始化,核心功能是与信令服务器建立 WebSocket 长连接,是所有后续操作的前提

    参数

    参数名 类型 说明 必填 默认值
    appId string 每个项目自带的appId 是 无
    onSuccess function 成功回调 否 无
    onFailure function 失败回调 否 无

    注意

    后续操作都需要以此函数调用为前提。

    join

    join(token: string, roomId: string, userId: string, onSuccess?: () => void, onFailure?: (err: Error) => void): string
    

    加入房间

    参数

    参数名 类型 说明 必填 默认值
    token string 进入房间时用于校验的验证 是 无
    roomId string 需要进入的房间号 是 无
    userId string 本地用户的 ID 是 无
    onSuccess function 成功回调 否 无
    onFailure function 失败回调 否 无

    返回值

    promise<userId>

    注意

    1. 同一个 client 只可以加入一个房间。

    2. token 与 appid 相关,每个项目可以有不同的生成逻辑。

    3. 与 leave 为逆操作。

    4. 加入大班小课功能后,可以同时创建两个 client 分别进入不同房间,但是只可以在一个房间内推流。

    leave

    leave(onSuccess?: () => void, onFailure?: (err: Error) => void): promise
    

    离开当前房间

    参数

    参数名 类型 说明 必填 默认值
    onSuccess function 成功回调 否 无
    onFailure function 失败回调 否 无

    返回值

    promise

    注意

    与 join 为逆操作。

    publish

    publish(
        stream: StreamInstance,
        option?: publishOption,
        onFailure?: FailureFunction
      ): void;
    

    在房间发布音视频流

    参数

    参数名 类型 说明 必填 默认值
    stream StreamInstance stream 流 是 无
    option publishOption 发布设置 否 无
    onFailure function 失败回调 否 无

    publishOption

    属性名 类型 说明 必填 默认值
    maxVideoBW number 最大视频码率,单位是 kbps 是 无
    minVideoBW number 最小视频码率,单位是 kbps 是 无

    返回值

    promise

    注意

    1.stream 由 VRTC.createStream 来创建。

    2.与 unpublish 为逆操作。

    回调

    成功推流会触发 stream-published 事件

    unpublish

    unpublish(byteStream: byteStream, onFailure?: (err: Error) => void): promise
    

    停止推流

    参数

    参数名 类型 说明 必填 默认值
    byteStream byteStream stream 流 是 无
    onFailure function 失败回调 否 无

    返回值

    promise

    注意

    与 publish 为逆操作。

    回调

    成功之后远端会受到 stream-removed 事件

    subscribe

    subscribe(byteStream: byteStream, options?: SubscribeOption, onFailure?: (err: Error) => void): promise
    

    订阅远端流

    参数

    参数名 类型 说明 必填 默认值
    byteStream byteStream stream 流 是
    options SubscribeOption 订阅配置 否 无
    onFailure function 失败回调 否 无

    SubscribeOption配置

    参数名 类型 说明 必填 默认值
    video boolean 是否订阅视频 否 true
    audio boolean 是否订阅音频 否 true
    bigStream boolean 订阅大流还是小流(开启了双流推送时) 否 true

    返回值

    promise

    回调

    成功订阅会触发 stream-subscribed 事件

    注意

    1.与 unsubscribe 为逆操作。

    2.建议配合 stream-added 事件使用。

    3.SubscribeOption 中 audio 与 video 不可以同时设置为 false 。

    unsubscribe

    unsubscribe(byteStream: byteStream, onFailure?: (err: Error) => void): promise
    

    停止订阅

    参数

    参数名 类型 说明 必填 默认值
    byteStream byteStream stream 流 是 无
    onFailure function 失败回调 否 无

    返回值

    promise

    注意

    与 subscribe 为逆操作。

    on

    const on = (event, callback) => {}
    

    监听事件

    参数

    参数名 类型 说明 必填 默认值
    event string 需要监听的事件 是 无
    callback function 事件触发时调用的回调 是 无

    注意

    与 off 为逆操作。

    off

    const  off = (event, callback) \=> {}
    

    取消监听事件

    参数

    参数名 类型 说明 必填 默认值
    event string 需要取消监听的事件 是 无
    callback function 需要取消调用的回调 是 无

    注意

    与 on 为逆操作。

    getConnectionState

    getConnectionState(): symbol
    

    获取连接状态

    返回值

    1.调用 join 之后为 CONNECTING。

    2.进入房间成功后为 CONNECTED。

    3.调用 leave 之后为 DISCONNECTING。

    4.离开房间成功后为 DISCONNECTED。

    getLocalVideoStats

    getLocalVideoStats(callback: ({ uid: LocalVideoStats }) => void): void
    

    获取本地视频流属性

    参数

    参数名 类型 说明 必填 默认值
    callback function 获取流属性后触发的回调 是 无

    LocalVideoStats详情

    属性名 类型 说明
    CaptureFrameRate number 捕获视频帧率,单位是 fps
    CaptureResolutionHeight number 捕获视频高度
    CaptureResolutionWidth number 捕获视频宽度
    EncodeDelay number 从采集到编码的延迟,单位为 ms
    MuteState boolean 视频是否开启
    SendBitrate number 发送视频码率,单位为 kbps
    SendFrameRate number 发送视频帧率,单位是 fps
    SendResolutionWidth number 发送视频宽度
    SendResolutionHeight number 发送视频高度
    TotalFreezeTime number 总卡顿时长,单位是 s
    TargetSendBitrate number 目标发送视频码率,单位是 kbps
    TotalDuration number 总视频时长,单位是 s

    getLocalAudioStats

    getLocalAudioStats(callback: ({ uid: LocalAudioStats }) => void): void
    

    获取本地视频流属性

    参数

    参数名 类型 说明 必填 默认值
    callback function 获取后触发的回调 是 无

    LocalAudioStats详情

    属性名 类型 说明
    CodecType string: 'Opus' | 'AAC' 音频编码格式
    MuteState boolean 音频是否开启
    RecordingLevel number 录制音量
    SendBitrate number 发送音频码率,单位是 kbps

    getRemoteAudioStats

    getRemoteAudioStats(callback: ({ uid: RemoteAudioStats }) => void): void
    

    获取远端视频流属性

    参数

    参数名 类型 说明 必填 默认值
    callback function 获取后触发的回调 是 无

    RemoteAudioStats详情

    属性名 类型 说明
    End2EndDelay number 发送端到接收端延迟,单位为 ms
    TransportDelay number 传输延迟,单位为 ms
    RecvLevel number 接收音量
    RecvBitrate number 接收码率,单位为 kbps
    CodecType string: 'Opus' | 'AAC' 音频编码格式
    MuteState Boolean 音频是否开启
    TotalFreezeTime number 总卡顿时间,单位是 s
    TotalPlayDuration number 总播放时长,单位是 s

    getRemoteVideoStats

    getRemoteVideoStats(callback: ({ uid: RemoteVideoStats }) => void): void
    

    获取远端视频流属性

    参数

    参数名 类型 说明 必填 默认值
    callback function 获取后触发的回调 是 无

    RemoteVideoStats详情

    属性名 类型 说明
    End2EndDelay number 发送端到接收端延迟,单位为 ms
    TransportDelay number 传输延迟,单位为 ms
    RecvBitrate number 接收视频码率,单位为 kbps
    RecvResolutionWidth number 接收视频宽度
    RecvResolutionHeight number 接收视频高度
    RenderResolutionWidth number 渲染视频宽度
    RenderResolutionHeight number 渲染视频高度
    RenderFrameRate number 渲染视频帧率,单位是 fps
    MuteState boolean 是否开启视频
    TotalFreezeTime number 总卡顿时间,单位是 s
    TotalPlayDuration number 总播放时长,单位是 s

    renewToken

    renewToken(token: string, onSuccess?: () => void, onFailure?: (err: Error) => void): promise
    

    更新校验 token

    参数

    参数名 类型 说明 必填 默认值
    token string 新的校验token 是
    onSuccess function 成功回调 否 无
    onFailure function 失败回调 否 无

    返回值

    promise

    注意

    进入房间时传入的校验 token 有过期时间,一旦触发 token 过期,会收到 token-request 事件,请在收到此事件后重新生成 token 然后调用此函数。

    setLiveTranscoding

    setLiveTranscoding(liveTranscoding: object): void
    

    设置直播推流转码

    参数

    参数名 类型 说明 必填 默认值
    liveTranscoding object 转推直播参数 是 无

    liveTranscoding属性设置

    属性名 类型 说明 必填 默认值
    audioBitrate number 音频码率 否 48
    audioChannels number: 1-5 声道数 否 1
    audioSampleRate number: 32000/44100/48000 音频采样率 否 44100
    backgroundColor number: 0x000000-0xffffff 背景色 否 0x000000
    height number 视频高度 否 360
    lowLatency boolean 是否使用低延时 否 false
    videoBitrate number 视频码率 否 400
    videoFramerate number: 1-30 视频帧率 否 15
    videoGop number 视频的 GOP 否 30
    width number 视频宽度 否 640
    transcodingUsers array 转码合图用户 是 无

    liveTranscoding设置示例

    var LiveTranscoding = {
      width: 640,
      height: 360,
      videoBitrate: 400,
      videoFramerate: 15,
      audioSampleRate: 48000,
      audioBitrate: 48,
      audioChannels: 1,
      videoGop: 30,
      transcodingUsers,
      backgroundColor: 0x000000
    };
    

    transcodingUsers设置

    属性名 类型 说明 必填 默认值
    alpha number: 0-1 透明度 是 无
    height number 视频帧高度 否 360
    uid string 用户 ID 否 无
    width number 视频帧宽度 否 640
    x number 视频帧左上角的横轴位置 否 0
    y number 视频帧左上角的纵轴位置 否 0
    zOrder number 图层编号 否 0

    注意

    请在调用 startLiveStreaming 前调用此参数。

    startLiveStreaming

    startLiveStreaming(url: string, enableTranscoding: boolean, onSuccess: () => void, onFailure: (err: Error) => void): void
    

    开启转推直播,推流到 CDN 成功开启转推后,请监听 live-transcoding-result 回调,如果转推过程中发生异常,等待服务端推流恢复,超时(60s)后,请调用 stopLiveStreaming 参数

    参数名 类型 说明 必填 默认值
    url string 直播推流的地址 是 无
    enableTranscoding boolean 是否启用直播转码 否 true
    onSuccess function 成功回调 否 无
    onFailure function 失败回调 否 无

    stopLiveStreaming

    stopLiveStreaming(onSuccess: () => void, onFailure: (err: Error) => void): void
    

    停止转推直播

    参数

    参数名 类型 说明 必填 默认值
    onSuccess function 成功回调 否 无
    onFailure function 失败回调 否 无

    sendCustomMessage

    sendCustomMessage(message: string|Object, onSuccess?: () => void, onFailure?: (err: Error) => void): promise
    

    本地用户发送消息,房间内其他用户都将收到

    参数

    参数名 类型 说明 必填 默认值
    message string|Object 需要传递的消息 是
    onSuccess function 成功回调 否 无
    onFailure function 失败回调 否 无

    返回值

    promise

    sendMessageToUser

    sendMessageToUser(uid: string|Object, message: object): promise
    

    向指定用户发送消息

    参数

    参数名 类型 说明 必填 默认值
    uid string|Object 用户 ID 是 无
    message object 需要传递的消息 是 无

    返回值

    promise

    setBusinessId

    setBusinessId(id: string, onFailure?: (err: Error) => void): void
    

    设置业务 ID ,一般用于区分相同项目中的不同业务线

    参数

    参数名 类型 说明 必填 默认值
    id string 业务 ID 是 无
    onFailure function 失败回调 否 无

    getBusinessId

    getBusinessId(): string
    

    获取业务 ID

    返回值

    业务 ID

    enableAudioVolumeIndicator

    client.enableAudioVolumeIndicator();
    

    开启说话者音量提示 参数 无

    返回值 promise

    enableAutoSubscribe

    (options?: { audio: boolean; video: boolean; }) => boolean
    

    自动订阅音频流,默认为自动订阅。 进房前,你可以调用本接口修改订阅设置,如果进房后调用会失败。

    返回值

    是否调用成功

    参数

    参数名 类型 说明 是否必传 默认值

    | options | { audio: boolean; video: boolean; } | 开始自动订阅的参数,其中,视频流包含了摄像头流和屏幕流

  • true:自动订阅
  • false:不自动订阅
  • | 否 | { audio: false, video: false } |

    setUserVisibility

    (visibility: boolean) => Promise<any>
    

    设置用户可见性。默认可见。 通过设置用户的可见性,可以控制用户在房间内的行为:

    注意

    参数

    参数名 类型 说明 是否必传 默认值
    visibility boolean 设置用户是否对房间内其他用户可见:
  • true: 可以被房间中的其他用户感知,且可以在房间内发布和订阅音视频流;
  • false: 无法被房间中的其他用户感知,且只能在房间内订阅音视频流。
  • 是 无

    Stream

    Stream 接口提供的方法用于定义音视频流对象的行为,例如流的播放控制、音视频的编码配置等。

    你可以通过 createStream 创建 stream 对象。一个 stream 对象指通话中发布的本地音视频流或订阅的远端音视频流。

    成员函数

    API 函数签名 描述
    init (onSuccess?: () => void, onFailure?: (err: Error) => void) => Promise<void> 流初始化
    play (domID: string, option: PlayOption, onFailure: (err: Error) => void) => Promise<void> 播放媒体流
    getMediaStream () => MediaStream 获取媒体流
    setVideoBitrate (bitrate: [number, number]) => void 设置视频码率
    setVideoProfile (profile: string) => void 设置视频属性,设置本地流的视频编码属性。每个属性对应一套视频参数,如分辨率、帧率、码率等
    setVideoEncoderConfiguration (param: VideoOption) => void 自定义视频编码配置,可以根据需要灵活设置本地流的视频分辨率、帧率和码率
    getStats (callback: (stats: LocalStreamStats | RemoteStreamStats) => void) => void 获取媒体流属性
    stop () => void 停止播放,但不断开媒体连接
    close () => void 关闭视频流或音频流,停止推拉流,断开 RTC 连接,取消摄像头和麦克风的访问权限并清除流属性
    unmuteAudio () => boolean 启用音频
    muteAudio () => boolean 禁用音频
    unmuteVideo () => boolean 启用视频
    muteVideo () => boolean 禁用视频
    getId () => string 获取流 ID
    hasAudio () => boolean 判断当前流是否包含音频
    hasVideo () => boolean 判断当前流是否包含视频
    replaceTrack (track: MediaStreamTrack, onSuccess?: () => void, onFailure?: (err: Error) => void) => Promise<void> 替换媒体流里面的音频或者视频轨
    getAudioLevel () => number 获取当前音频能量,可以理解为音量
    startAudioMixing (options: MixOption, callback?: (error?: Error) => void) => void 开始播放音乐文件及混音
    stopAudioMixing (id: number, callback?: (err: Error) => void) => void 停止播放音乐文件及混音
    pauseAudioMixing (id: number, callback?: () => void) => Promise<void> 暂停播放音乐文件及混音
    resumeAudioMixing (id: number, callback?: (err?: Error) => void) => Promise<void> 恢复播放音乐文件及混音
    getAudioMixingDuration (id: number) => number 获取音乐文件总时长
    getAudioMixingCurrentPosition (id: number) => number 获取音乐文件播放进度
    setAudioMixingPosition (id: number, targetTime: number, callbackOrigin?: () => void) => Promise<void> 设置音乐文件音频文件的播放位置
    setAudioMixingVolume (id: number, volume: number) => void 调节音乐文件在本地和远端播放的音量大小
    preloadAudioMixing (id: string, filePath: string) => Promise<void> 预加载指定音乐文件到缓存
    unloadAudioMixing (id: string) => Promise<void> 清除预加载的音频资源
    enableAudioMixingBuffer (callback?: () => void) => void 启动外部音频流混音
    disableAudioMixingBuffer () => void 关闭外部音频流混音
    pushAudioMixingBuffer (buffer: ArrayBuffer) => void 向 SDK 推送外部音频数据
    getVideoTrack () => MediaStreamTrack 获取当前流中的视频轨道
    getAudioTrack () => MediaStreamTrack 获取当前流中的音频轨道
    mirror (enabled: boolean) => void 打开/关闭镜像
    enableLocalVideo (enabled: boolean, constraints?: MediaTrackConstraints) => boolean 开启/关闭视频采集设备
    enableLocalAudio (enabled: boolean, constraints?: MediaTrackConstraints) => boolean 开启/关闭音频采集设备
    switchDevice (camerId: string, micId: string) => boolean 切换设备
    setScreenParameters ({width?: number, height?: number, frameRate?: number, bitrate?: number}) => void 设置屏幕分享属性

    函数说明

    init

    init(onSuccess?: () => void, onFailure?: (err: Error) => void): void
    

    流初始化

    参数

    参数名 类型 说明 必填 默认值
    onSuccess function 成功回调 否 无
    onFailure function 失败回调 否 无

    注意

    后续操作都需要以此函数调用为前提。

    play

    play(domID: string, option?: object, onFailure?: (err: Error) => void): void
    

    播放媒体流

    参数

    参数名 类型 说明 必填 默认值
    domID string html 页面放置 video 标签的 dom 组件 ID 是
    option object 播放参数 否 {}
    onFailure function 失败回调 否 无

    option详情

    属性名 类型 说明 必填 默认值
    fit string:cover/contain video 标签的 style 属性 否 无
    muted boolean 是否静音 否 false

    getMediaStream

    getMediaStream(): mediaStream
    

    获取媒体流

    返回值

    mediaStream

    setVideoBitRate

    setVideoBitRate(bitrate: array): void
    

    设置视频码率

    参数

    参数名 类型 说明 必填 默认值
    bitrate array:[min, max] 目标码率,单位是 kbps 是 无

    注意

    1.码率设置会有一个缓步上升的过程,慢慢达到目标值。

    2.如果范围设置比较窄,实际效果并不很精确。

    3.请在 publish 之前调用此方法。

    setVideoProfile

    setVideoProfile(profile: string): void
    

    设置视频属性,设置本地流的视频编码属性。每个属性对应一套视频参数,如分辨率、帧率、码率等

    参数

    参数名 类型 说明 必填 默认值
    profile string 视频参数 是 无

    profile规格

    视频属性 分辨率(宽x高) 帧率(fps) 码率(Kbps) Chrome Firefox Safari
    120p_1 160 x 120 15 65 支持
    120p_3 120 x 120 15 50 支持
    180p_1 320 x 180 15 140 支持
    180p_3 180 x 180 15 100 支持
    180p_4 240 x 180 15 120 支持
    240p_1 320 x 240 15 200 支持
    240p_3 240 x 240 15 140 支持
    240p_4 424 x 240 15 220 支持
    360p_1 640 x 360 15 400 支持
    360p_3 360 x 360 15 260 支持
    360p_4 640 x 360 30 600 支持
    360p_6 360 x 360 30 400 支持
    360p_7 480 x 360 15 320 支持
    360p_8 480 x 360 30 490 支持
    360p_9 640 x 360 15 800 支持
    360p_10 640 x 360 24 800 支持
    360p_11 640 x 360 24 1000 支持
    480p_1 640 x 480 15 500 支持 支持 支持
    480p_2 640 x 480 30 1000 支持 支持 支持
    480p_3 480 x 480 15 400 支持 支持 支持
    480p_4 640 x 480 30 750 支持 支持 支持
    480p_6 480 x 480 30 600 支持 支持 支持
    480p_8 848 x 480 15 610 支持 支持 支持
    480p_9 848 x 480 30 930 支持 支持 支持
    480p_10 640 x 480 10 400 支持 支持 支持
    720p_1 1280 x 720 15 1130 支持 支持 支持
    720p_2 1280 x 720 30 2000 支持 支持 支持
    720p_3 1280 x 720 30 1710 支持 支持 支持
    720p_5 960 x 720 15 910 支持 支持 支持
    720p_6 960 x 720 30 1380 支持 支持 支持
    1080p_1 1920 x 1080 15 2080 支持 支持
    1080p_2 1920 x 1080 30 3000 支持 支持
    1080p_3 1920 x 1080 30 3150 支持 支持
    1080p_5 1920 x 1080 60 4780 支持 支持
    1440p_1 2560 x 1440 30 4850 支持 支持
    1440p_2 2560 x 1440 60 7350 支持 支持
    4K_1 3840 x 2160 30 8910 支持 支持
    4K_3 3840 x 2160 60 13500 支持 支持

    注意

    1.码率,帧率和分辨率设置会有一个缓步上升的过程,慢慢达到目标值。

    2.请在 publish 之前调用此方法。

    setVideoEncoderConfiguration

    setVideoEncoderConfiguration(option: object): void
    

    自定义视频编码配置,可以根据需要灵活设置本地流的视频分辨率、帧率和码率

    参数

    参数名 类型 说明 必填 默认值
    option object 自定义视频编码 是 无

    option详情

    属性名 类型 说明 必填 默认值
    resolution object 视频分辨率(宽高) 否 无
    frameRate object 视频帧率(最低,最高) 否 无
    bitrate object 视频码率(最低,最高,单位是 kbps) 否 无

    option示例

    stream.setVideoEncoderConfiguration({
      // 视频分辨率
      resolution: {
        width: 640,
        height: 480
      },
      // 视频编码帧率。通常建议是 15 帧,不超过 30 帧
      frameRate: {
        min: 15,
        max: 30
      },
      // 码率。一般情况下推荐使用标准码率
      bitrate: {
        min: 1000,
        max: 5000
      }
    });
    

    注意

    1.码率,帧率和分辨率设置会有一个缓步上升的过程,慢慢达到目标值。

    2.请在 publish 之前调用此方法。

    getStats

    (callback: (stats: LocalStreamStats | RemoteStreamStats) => void) => void
    

    获取到统计触发的回调 * 当获取的是发布音视频流时,数据为 LocalStreamStats * 当获取的是订阅的音视频流时,数据为 RemoteStreamStats

    参数

    参数名 类型 说明 必填 默认值
    callback function 获取到属性触发的回调 是 无

    LocalStreamStats 详情

    属性名 类型 说明
    accessDelay number 接入 SD-RTN 网络的延迟,单位为 ms
    audioSentBytes number 已发送音频字节数
    audioSentPackets number 已发送音频包数
    audioSentPacketsLost number 发送音频丢包数
    videoSentBytes number 已发送视频字节数
    videoSentFrameRate number 发送视频帧率,单位是 fps
    videoSentPackets number 已发送视频包数
    videoSentPacketsLostRate number 发送视频丢包率
    videoSentResolutionHeight number 视频高度
    videoSentResolutionWidth number 视频宽度

    RemoteStreamStats 详请

    属性名 类型 说明
    accessDelay number 接入 SD-RTN 网络的延迟,单位为 ms
    audioReceivedBytes number 接收音频字节数
    audioReceivedDelay number 接收音频延迟,单位 ms
    audioReceivedPackets number 接收音频包数
    audioReceivedPacketsLost number 接收音频丢包数
    endToEndDelay number 端到端延迟,单位 ms
    videoReceivedBytes number 接收视频字节数
    videoReceivedDelay number 接收视频延迟,单位 ms
    videoReceivedFrameRate number 接收视频帧率,单位是 fps
    videoReceivedPackets number 接收视频包数
    videoReceivedPacketsLostRate number 接收视频丢包率
    videoReceivedResolutionHeight number 视频高度
    videoReceivedResolutionWidth number 视频宽度

    stop

    stop(): void
    

    停止播放,但不断开 RTC 连接

    close

    close(): void
    

    关闭视频流或音频流,停止推拉流,断开 RTC 连接,取消摄像头和麦克风的访问权限并清除媒体流属性

    muteAudio

    muteAudio(): boolean
    

    关闭音频

    返回值

    true: 成功
    false: 失败

    muteVideo

    muteVideo(): boolean
    

    关闭视频

    返回值

    true: 成功
    false: 失败

    unmuteAudio

    unmuteAudio(): void
    

    开启音频

    返回值

    true: 成功
    false: 失败

    unmuteVideo

    unmuteVideo(): boolean
    

    关闭视频

    返回值

    true: 成功
    false: 失败

    getId

    getId(): string
    

    获取流 ID

    返回值

    当前流的 ID

    hasAudio

    hasAudio(): boolean
    

    获取音频 flag

    返回值

    true:当前流有音频数据

    false:当前流没有音频数据

    hasVideo

    hasVideo(): boolean
    

    获取视频 flag

    返回值

    true:当前流有视频数据

    false:当前流没有视频数据

    replaceTrack

    replaceTrack(mediaStreamTrack: mediaStreamTrack, onSuccess?: () => void, onFailure?: (err: Error) => void): void
    

    替换媒体流里面的音频或者视频轨

    参数

    参数名 类型 说明 必填 默认值
    mediaStreamTrack mediaStreamTrack 媒体流轨道 是
    onSuccess function 成功回调 否 无
    onFailure function 失败回调 否 无

    注意

    mediaStreamTrack 为浏览器原生 API。

    getAudioLevel

    getAudioLevel(): number
    

    获取当前音频能量(可以理解为音量)

    返回值

    number:取值范围 0 - 255

    注意

    该方法获取的是当前时刻的音量。如果想表示本地或远端音量的变化,建议使用 Web API 中的 setTimeout 或者 setInterval 方法实时获取。

    startAudioMixing

    (options: MixOption, callback?: (error?: Error) => void) => void
    

    开始播放音乐文件及混音 将指定音频文件和麦克风采集的音频流进行混音或用音频文件替换麦克风采集的音频流。可以通过多次调用本方法,传入不同的 ID 和 file_path 以实现同时播放多个音乐文件。

    注意

    参数

    参数名 类型 说明 是否必传 默认值
    options MixOption 设置参数 是 无
    callback (error?: Error) => void 结果回调 否 无

    options 详情

    属性名 类型 说明 必填 默认值
    cacheResource boolean 是否缓存混音文件 否 true
    cycle number 指定音频文件循环播放的次数 否 1
    filePath string 指定需要混音的在线音频文件 是
    loop boolean 是否循环播放 否 false
    playTime number 设置音频文件开始播放的时间位置,单位为 ms 是
    replace boolean 是否要用音频文件替换本地音频流 否 false

    使用示例

    stream.startAudioMixing({
        filePath: 'example.mp3',
        playTime: 0,
        loop: true
    }, function(error) {
        if (error) {
            // 错误处理
            return;
        }
        // 播放成功后的流程
    });
    

    注意

    支持浏览器:Safari 12 及以上版本,Chrome 65 及以上版本以及最新版 Firefox 。

    stopAudioMixing

    (id: number, callback?: (err: Error) => void) => void
    

    停止播放音乐文件及混音

    注意

    参数

    参数名 类型 说明 是否必传 默认值
    id number 混音 ID 是 无
    callback (err: Error) => void 结果回调 否 无

    pauseAudioMixing

    (id: number, callback?: () => void) => Promise<void>
    

    暂停播放音乐文件及混音

    注意

    参数

    参数名 类型 说明 是否必传 默认值
    id number 混音 ID 是 无
    callback () => void 否 无

    resumeAudioMixing

    (id: number, callback?: (err?: Error) => void) => Promise<void>
    

    恢复播放音乐文件及混音

    注意 调用 PauseAudioMixing 方法暂停播放音乐文件及混音后,可以通过调用本方法恢复播放及混音。

    参数

    参数名 类型 说明 是否必传 默认值
    id number 混音 ID 是 无
    callback (err?: Error) => void 结果回调 否 无

    getAudioMixingDuration

    (id: number) => number
    

    获取音乐文件总时长

    注意 调用本方法前,需要先调用 PreloadAudioMixing 或 StartAudioMixing。

    返回值

    音乐文件总时长

    参数

    参数名 类型 说明 是否必传 默认值
    id number 混音 ID 是 无

    getAudioMixingCurrentPosition

    (id: number) => number
    

    获取音乐文件播放进度

    注意 调用本方法前,需要先调用 StartAudioMixing。

    返回值

    音乐文件播放进度

    参数

    参数名 类型 说明 是否必传 默认值
    id number 混音 ID 是 无

    setAudioMixingPosition

    (id: number, targetTime: number, callbackOrigin?: () => void) => Promise<void>
    

    设置音乐文件音频文件的播放位置 你可以根据实际情况从指定的位置播放音乐文件,无需从头到尾完整播放一个音乐文件。

    注意 调用本方法前,需要先调用 StartAudioMixing。

    参数

    参数名 类型 说明 是否必传 默认值
    id number 混音 ID 是 无
    targetTime number 进度条位置,单位为毫秒。 是 无
    callbackOrigin () => void 否 无

    setAudioMixingVolume

    (id: number, volume: number) => void
    

    调节音乐文件在本地和远端播放的音量大小

    注意 调用本方法前,需要先调用 PreloadAudioMixing 或 StartAudioMixing。

    参数

    参数名 类型 说明 是否必传 默认值
    id number 混音 ID。音乐文件播放音量范围为 0~400,为保证更好的音质,建议将 volume 值设为 [0,100]。
  • 0:静音
  • 100:原始音量
  • 400: 最大可调音量 (自带溢出保护)
  • 是 无
    volume number 是 无

    preloadAudioMixing

    (id: string, filePath: string) => Promise<void>
    

    预加载指定音乐文件到缓存 需要频繁播放某个音乐文件的时候,调用本方法预加载该文件,在播放的时候可以只加载一次该文件,减少 CPU 占用。

    注意

    参数

    参数名 类型 说明 是否必传 默认值
    id string 混音ID。
    应用调用者维护,请保证唯一性。如果使用相同的 ID 重复调用本方法,后一次会覆盖前一次。如果先调用 startAudioMixing,再使用相同的 ID 调用本方法 ,会先停止上一个混音,然后加载后一个混音。
    例如,使用一个 ID 调用本方法预加载 A.mp3 后,如果需要使用相同的 ID 调用 startAudioMixing 播放 B.mp3,请先调用 unloadAudioMixing 卸载 A.mp3 ,否则混音播放仍为 A.mp3。
    是 无
    filePath string 指定混音文件的绝对路径,支持音频文件格式有: mp3,aac等 是 无

    unloadAudioMixing

    (id: string) => Promise<void>
    

    清除预加载的音频资源

    参数

    参数名 类型 说明 是否必传 默认值
    id string 混音ID 是 无

    enableAudioMixingBuffer

    (callback?: () => void) => void
    

    启动外部音频流混音

    注意

    参数

    参数名 类型 说明 是否必传 默认值
    callback () => void 否 无

    disableAudioMixingBuffer

    () => void
    

    关闭外部音频流混音

    注意 使用 EnableAudioMixingBuffer 开启外部音频流混音后,请使用本方法关闭该混音。

    pushAudioMixingBuffer

    (buffer: ArrayBuffer) => void
    

    向 SDK 推送外部音频数据

    注意 调用该方法前,须通过 EnableAudioMixingBuffer 启动外部音频流混音。

    参数

    参数名 类型 说明 是否必传 默认值
    buffer ArrayBuffer PCM 音频数据分片,时长大于1秒 是 无

    getVideoTrack

    getVideoTrack(): mediaStreamTrack
    

    获取当前流中的视频轨道

    返回值

    视频轨道

    注意

    mediaStreamTrack 为浏览器原生 API。

    getAudioTrack

    getAudioTrack(): mediaStreamTrack
    

    获取当前流中的音频轨道

    返回值

    音频轨道

    注意

    mediaStreamTrack 为浏览器原生 API。

    mirror

    mirror(enabled: boolean): void
    

    开启/关闭本地摄像头流预览的镜像模式。

    参数

    参数名 类型 说明 必填 默认值
    enable boolean 是否开启 是 无

    注意 调用此接口设置不会对发布到远端的视频流进行镜像处理。

    enableLocalVideo

    enableLocalVideo = (enable: boolean, constraints?: MediaTrackConstraints) => boolean
    

    开启/关闭视频采集设备

    参数

    参数名 类型 说明 必填 默认值
    enable boolean 是否开启 是 无
    constraints MediaTrackConstraints 指定设备 ID,设备 ID 可通过 getDevices 获取 否 无

    返回值 true:成功 false:失败

    enableLocalAudio

    enableLocalAudio = (enable: boolean, constraints?: MediaTrackConstraints) => boolean
    

    开启/关闭音频采集设备

    参数

    参数名 类型 说明 必填 默认值
    enable boolean 是否开启 是 无
    constraints MediaTrackConstraints 指定设备 ID,设备 ID 可通过 getDevices 获取 否 无

    返回值 true:成功 false:失败

    switchDevice

    switchDevice: ({microphoneId?: string, camerId?: string}) => boolean
    

    在 createStream 之后,可以调用该方法切换本地流的媒体输入设备,包括:音频输入设备(如麦克风)和视频输入设备(如摄像头)

    参数

    参数名 类型 说明 必填 默认值
    microphoneId string 本次切换的目标音频采集设备 ID 否 无
    cameraId string 本次切换的目标视频采集设备 ID 否 无

    注意 设备 ID 可通过 getDevices 获取

    返回值 true:成功 false:失败

    setScreenParameters

    setScreenParameters({
            width?: number,
            height?: number,
            frameRate?: number,
            bitrate?: number
    })
    

    在调用 stream.init 之前,调用本接口设置共享屏幕属性,分别设置屏幕分辨率,帧率和码率。

    参数

    参数名 类型 说明 必填 默认值
    width number 宽度 否
    height number 高度 否
    frameRate number 帧率 否
    bitrate number 码率 否

    返回值 无

    注意 * 由于设备和浏览器的限制,设置成功后浏览器可能按照实际能力自动调整和适配 * 使用 Safari 浏览器时,如果设置的分辨率比例跟屏幕比例不一致会出现剪裁。

    sendSEIMessage

    (sei: Uint8Array, repeatCount?: number) => void
    

    在视频通信时,通过视频帧发送 SEI 数据。

    注意

    参数

    参数名 类型 说明 是否必传 默认值
    sei Uint8Array SEI 消息,长度不超过 4 kB。 是 无
    repeatCount number 消息发送重复次数。
    本条 SEI 数据将被添加到当前视频帧及之后的连续多个视频帧中。取值范围是 [0, 30]。默认值为 0,不重复发送。
    否 0

    Logger

    VRTC.Logger
    

    提供设置 logger 的方法,包括设置日志输出等级、开启/关闭日志上传。

    成员常量

    属性名 值
    VERBOSE -1
    DEBUG 0
    TRACE 1
    INFO 2
    WARNING 3
    ERROR 4
    NONE 5

    成员函数

    返回 名称
    无 setLogLevel

    函数说明

    setLogLevel

    设置日志输出等级

    setLogLevel(level: LogLevel): void
    

    参数

    参数名 类型 说明 必填 默认值
    level LogLevel 日志等级 是

    注意

    1.LogLevel 为 logger 成员常量:VERBOSE ,DEBUG ,TRACE ,INFO ,WARNING ,ERROR ,NONE

    2.默认输出等级为 WARNING 。

    3.LogLevel 中各个等级日志输出量递减。